
const { init } = require('./../../../wxCloudClientSDK.umd.js')
// 指定云开发环境 ID
wx.cloud.init({
  env: "cloud1-9gel6ndh8e555155", // 当前的云开发环境 ID
});

const client = init(wx.cloud);

Page({
  data: {
    formData: {
      name: '',
      phone: '',
      region: '',
      address: '',
      isDefault: false
    },
    showAreaPicker: false,
    provinces: [], // 省份列表
    cities: [], // 城市列表
    districts: [], // 区县列表
    pickerValue: [0, 0, 0], // 选择器选中的下标
    selectedRegion: {
      province: {},
      city: {},
      district: {}
    }
  },

  onLoad: function() {
    wx.setNavigationBarTitle({
      title: '添加地址'
    });
    // 初始化省市区数据
    this.initAreaData();
  },

  // 初始化省市区数据
  initAreaData: function() {
    // 这里应该从本地或接口获取省市区数据
    // 示例数据结构
    const areaData = {
      provinces: [
        { code: '110000', name: '北京市' },
        { code: '120000', name: '天津市' }
        // ... 更多省份
      ]
    };
    this.setData({
      provinces: areaData.provinces
    });
    this.updateCities(0);
  },

  // 更新城市列表
  updateCities: function(provinceIndex) {
    // 根据选中的省份更新城市列表
    // 实际应用中需要根据省份code获取对应的城市列表
    const cities = [
      { code: '110100', name: '北京市' }
      // ... 更多城市
    ];
    this.setData({
      cities: cities
    });
    this.updateDistricts(0);
  },

  // 更新区县列表
  updateDistricts: function(cityIndex) {
    // 根据选中的城市更新区县列表
    // 实际应用中需要根据城市code获取对应的区县列表
    const districts = [
      { code: '110101', name: '东城区' },
      { code: '110102', name: '西城区' }
      // ... 更多区县
    ];
    this.setData({
      districts: districts
    });
  },

  // 显示地区选择器
  showAreaPicker: function() {
    this.setData({
      showAreaPicker: true
    });
  },

  // 隐藏地区选择器
  hideAreaPicker: function() {
    this.setData({
      showAreaPicker: false
    });
  },

  // 地区选择器值改变
  areaChange: function(e) {
    const values = e.detail.value;
    if (values[0] !== this.data.pickerValue[0]) {
      this.updateCities(values[0]);
      values[1] = 0;
      values[2] = 0;
    }
    if (values[1] !== this.data.pickerValue[1]) {
      this.updateDistricts(values[1]);
      values[2] = 0;
    }
    this.setData({
      pickerValue: values
    });
  },

  // 确认选择地区
  confirmArea: function() {
    const { provinces, cities, districts, pickerValue } = this.data;
    const region = [
      provinces[pickerValue[0]].name,
      cities[pickerValue[1]].name,
      districts[pickerValue[2]].name
    ].join(' ');
    
    this.setData({
      'formData.region': region,
      showAreaPicker: false
    });
  },

  // 输入联系人
  inputName: function(e) {
    this.setData({
      'formData.name': e.detail.value
    });
  },

  // 输入手机号
  inputPhone: function(e) {
    this.setData({
      'formData.phone': e.detail.value
    });
  },

  // 输入详细地址
  inputAddress: function(e) {
    this.setData({
      'formData.address': e.detail.value
    });
  },

  // 切换默认地址
  switchDefault: function(e) {
    this.setData({
      'formData.isDefault': e.detail.value
    });
  },

  // 保存地址
  saveAddress: function() {
    const { formData } = this.data;
    
    // 表单验证
    if (!formData.name) {
      wx.showToast({
        title: '请输入联系人',
        icon: 'none'
      });
      return;
    }
    if (!formData.phone) {
      wx.showToast({
        title: '请输入手机号码',
        icon: 'none'
      });
      return;
    }
    if (!/^1\d{10}$/.test(formData.phone)) {
      wx.showToast({
        title: '手机号码格式不正确',
        icon: 'none'
      });
      return;
    }
    if (!formData.region) {
      wx.showToast({
        title: '请选择所在地区',
        icon: 'none'
      });
      return;
    }
    if (!formData.address) {
      wx.showToast({
        title: '请输入详细地址',
        icon: 'none'
      });
      return;
    }

    // TODO: 保存地址信息到服务器
    wx.showLoading({
      title: '保存中...'
    });

    // 模拟保存操作
    /*
    setTimeout(() => {
      wx.hideLoading();
      wx.showToast({
        title: '保存成功',
        icon: 'success',
        duration: 2000,
        success: () => {
          setTimeout(() => {
            wx.navigateBack();
          }, 2000);
        }
      });
    }, 1000);
    */

   client.models.address_info.create({
    data: {
      userId: 1,
      receiverName: formData.name,
      phone: formData.phone,
      area: formData.region,
      detail: formData.address,
      enableDefault: formData.isDefault.toString(),
    }
   }).then(res => {
    console.log("save address_info: ", res);
    wx.hideLoading();

    wx.switchTab({
      url: '/page/mycenter/index',
    })

   }).catch(res => {
    console.log("err save address_info: ", res);
    wx.hideLoading();
   });

  }
}); 